home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / xprolog.arc / xprolog.doc < prev   
Text File  |  1987-10-12  |  25KB  |  806 lines

  1.  
  2.  
  3.             X Prolog Vers. 2.0
  4.  
  5.     This software is copyrighted by Andreas Toenne.
  6.     It may be copied free of charge iff this copyright notice
  7.     is left at it's place.
  8.  
  9.     Andreas Toenne
  10.     Computer Science Department
  11.     University of Dortmund, W-Germany
  12.     
  13.     E-mail : 
  14.         atoenne@unido.uucp
  15.         atoenne@unido.bitnet
  16.         ...!seismo!unido!atoenne
  17.         
  18.  
  19.     ***********************************************************
  20.     
  21.     Note ! This manual is just a quick hack to make Xprolog
  22.     available as fast as possible.
  23.     Sections that are missing are stated in '<' and '>'
  24.     Xprolog follows mostly the Cprolog standard, thus the
  25.     Cprolog manual could be of some help to the novice user
  26.  
  27.     ***********************************************************
  28.     
  29.  
  30.     1. Getting started.
  31.     
  32.     This program was developed with the Mark Williams C-Compiler Vers. 2.0
  33.     It was designed to live on a hard disk!
  34.     To start Xprolog simply double click xprolog.ttp without arguments.
  35.     Xprolog will try to read it's default image as : C:\BIN\PBOOT
  36.     If you don't have this directory or wish to start with another
  37.     image, enter the name as an argument for Xprolog.
  38.     You may set the enviroment variable BOOTFILE as well.
  39.     
  40.     1.1 Booting XProlog
  41.     
  42.     If you start Xprolog for the very first time, you must create
  43.     your own image.
  44.     This is done by calling Xprolog with the option -b.
  45.     Make sure that the bootfile _boot is present in the current directory.
  46.     You may save the image with 'save(Imagename).' then.
  47.     
  48.     1.2 Options
  49.     
  50.     You can specify the sizes of the various data areas with the
  51.     following options. The new size must be given in bytes.
  52.     
  53.     -p<size>     prototype space
  54.     -f<size>    functor space
  55.     -r<size>    number of rules (not bytes!)
  56.     -c<size>    copystack
  57.     -s<size>    THE STACK
  58.     -t<size>    trailstack
  59.     
  60.     The builtin predicate 'statistics' shows the current sizes of
  61.     all data areas.
  62.  
  63.     1.3 General
  64.     
  65.     The enviroment variable SHELL may be set if you don't have
  66.     msh.prg    or want to specify another shell.  (cf.  'system', 'sh')
  67.     <Control>C may be pressed anytime during computation.
  68.     Xprolog performs an abort then. (cf. 'abort')
  69.     
  70.     1.4 Explanation of Data Areas
  71.     
  72.     Prototype: a term in a prolog program
  73.     Prototype space: contains all prototypes. Forms a heap.
  74.     Rule space: contains descriptors for prolog rules. (clause space)
  75.         The rule's terms are kept in the prototype space.
  76.     Functor: general descriptor for prolog terms. Contains the name, arity
  77.         optional operator definitions and a link to it's rules.
  78.         Functors are kept in an avl-tree.
  79.     Copystack: keeps copies of prototypes. Grows during unification and
  80.         shrinks only upon backtracking.
  81.     THE STACK: keeps the computation data that makes up the resolution
  82.         tree. Highly dynamic !!
  83.     Trailstack: keeps trails (references) for variables that must be
  84.         preserved for backtracking. Usually very small.
  85.  
  86.     1.5 Limitations and Default Values
  87.     
  88.     - max. 20 arguments in a term
  89.     - max. 50 variables (without anonymous) in a prototype term
  90.     - max. 15 open streams
  91.     - the reader can read terms upto 8000 bytes
  92.     - max. 256 characters in a name
  93.     - the cpu stack is 32000 bytes wide
  94.     
  95.     - default shell is 'c:\bin\msh.prg'
  96.     - default bootimage is 'c:\bin\pboot'
  97.     - default prototype space size is 30000 bytes
  98.     - default copystack size if 50000 bytes
  99.     - default STACK size is 50000 bytes
  100.     - default trailstack size is 800 trail entries
  101.     - default number of clauses is 1000
  102.     - default functor space is 30000 bytes
  103.  
  104.     2.0 Error Handling and Debugging
  105.     
  106.     2.0.1 Fatal Errors
  107.     
  108.     Fatal errors are :
  109.     - not enough memory
  110.     - prototype space overflow
  111.     - missing main goal to start the machine
  112.     - main goal has stopped
  113.     - clause space overflow
  114.     - missing error goal, iff an recoverable error happens
  115.     - functor space overflow
  116.     - bad data during boot phase
  117.     - invalid prolog image
  118.     
  119.     Fatal errors print an message and terminate Xprolog.
  120.     
  121.     2.0.2 Lesser Errors
  122.     
  123.     These are :
  124.     - STACK overflow
  125.     - Trailstack overflow
  126.     - Copystack overflow
  127.     
  128.     These errors cause an abort of the current goal. (cf. 'abort')
  129.     They are usually caused by an loop or by generally insuffient memory.
  130.     
  131.     2.0.3 Recoverable Errors
  132.     
  133.     Recoverable Errors are counted as :
  134.     1. Unknown clause.
  135.     2. IO failure.
  136.     3. Read past EOF.
  137.     4. Bad syntax.
  138.     5. Too many args/vars.
  139.     6. Bad arguments.
  140.     7. No valid expression. 
  141.     8. User break. (control)C
  142.     
  143.     Except error 1 these error are caused by builtin predicates.
  144.     They have the following meanings :
  145.     
  146.     1. The current goal refers to an unknown clause. This is normaly due
  147.        to a typo or an incomplete program.
  148.     2. Some sort of general nastiness. Watch out !!
  149.     3. If a read, get, etc. hits the end of the current input stream,
  150.        it's argument will be unified with 'end_of_file'.
  151.        Note ! This differs from other prolog implementations.
  152.        If the programs attemps to read from this stream again, error 3
  153.        is the result.
  154.     4. This error is due to bad syntax in an prolog term.
  155.        Look at the detailed error description of the reader.
  156.     5. Xprolog has hard coded limitations for the number of arguments
  157.        of a term and the number of variables in a prototype term.
  158.        See section 1.5 'Limitations and Default Values'
  159.     6. The arguments failed the parameter check for builtins.
  160.     7. The user typed <control>C
  161.  
  162.     When an recoverable error occurs, a new goal is set up.
  163.     This is 'error(NumberOfTheError, GoalThatCausedTheError)'.
  164.     The clause error should normally print a message on the screen and
  165.     fail. However it is possible to correct the error and succeed then.
  166.     (Note that error 1 should always lead to a failure)
  167.  
  168.     2.1 Debugging Predicates
  169.     
  170.     There are few of them right now.
  171.     'debug' switches tracing on.
  172.     'nodebug' switches tracing off.
  173.     'leash(Value)' sets the amount of tracing data.
  174.     The initial value after debug is switched on is 'half'.
  175.     The following leash modes exists :
  176.     - full    trace on call, retry, exit and fail
  177.     - tight    trace on call, retry and fail
  178.     - half    trace on call and retry
  179.     - loose    trace on call
  180.     - off    no trace
  181.     
  182.     < it is assumed that the reader is familiar with the procedure >
  183.     < box control flow model. cf. the prolog primer by Clocksin and >
  184.     < Mellish >
  185.  
  186.     3. Reader and Syntax
  187.     
  188.     <far too short>
  189.  
  190.     Generally the reader expects every goal and every program term
  191.     to be finished by a dot and a new line!
  192.         
  193.     To read a prolog program (not an image), you should type
  194.     'consult(filenameinsinglequotes).'
  195.     If you want to read several files you can shorten the command to
  196.     '[filename, filename, ...].'. (cf. list syntax)
  197.     The goal 'reconsult(filenameinsinglequotes)' rereads clauses.
  198.     That means it abolishes the old clauses before asserting them
  199.     from the file. (cf. 'abolish' and 'assert')
  200.     The same effect is achieved by preceeding the filename in the
  201.     short notation by a '-'.
  202.     A special file (cf. IO predicates) is 'user'. This stands for
  203.     the terminal.
  204.     
  205.     When Xprolog is in the top level loop, it reads goals from
  206.     the terminal and tries to satisfy them.
  207.     When Xprolog consultes a file, it reads terms and tries to assert
  208.     them. You can execute goals by preceeding them by ?- or :- .
  209.     The only difference between ?- and :- is, that :- generates no
  210.     answer (ie. 'no' or 'yes') and no alternatives are tried.
  211.     
  212.     3.1 Prolog Syntax
  213.     
  214.     3.1.1 Terms
  215.     
  216.     Terms are
  217.     - constants
  218.     - variables
  219.     - structures (generally known as compound terms)
  220.     
  221.     Constants are
  222.     - integers    (all natural numbers that fit in two machine words)
  223.     - atoms        (actual atoms are structures without arguments)
  224.     The name for an atom must start with a lowercase letter and may
  225.     contain any letter, digit and the '_'.
  226.     If you want to use any character, you should enclose the name in
  227.     single quotes.
  228.     < there are some special 'standalone' character which form a >
  229.     < valid name. cf. CM 'Programming in Prolog' >
  230.     
  231.     Variables must start with an uppercase letter or with an '_'.
  232.     I